﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DAL
{
        public partial     class OrdenVenta
            {
            public void AddSet( dbGestionDataContext _db,
                                 string numDocumento,
                                int	idCliente,
                                int? idCoCliente,
                                bool bitCopropietario,
                                int?	idProforma,
                                int	idFormatoVenta,
                                int	idVendedor,
                                DateTime	fecha,
                                int idUsuarioCre,
                                string	usuarioCre,
                                string	comentario,
                                int idEstado,
                                int idProyecto,
                                int cuentaAhorro,
                                int?	idBanco,
                                int idMoneda)
            {

                this.numDocumento = numDocumento;
                this.idCliente=idCliente;
                this.idProforma=idProforma;
                this.idFormatoVenta=idFormatoVenta;
                this.idVendedor=idVendedor;
                this.fecha=fecha;
                this.usuarioCre=usuarioCre;
                this.comentario=comentario;
                this.idBanco=idBanco;
                this.cuentaAhorro = cuentaAhorro;
                this.idUsuarioMod = idUsuarioCre;
                this.usuarioMod = usuarioCre;
                this.fechaCre = DateTime.Now;
                this.fechaMod = DateTime.Now;
                this.idEstado = idEstado;
                this.idCoCliente = idCoCliente;
                this.bitCopropietario = bitCopropietario;
                this.idProyecto = idProyecto;
                this.idMoneda = idMoneda;
                
                _db.OrdenVentas.InsertOnSubmit(this);

            }




            public void UpdateSet( int idCliente,
                    int? idCoCliente,
                    bool bitCopropietario,
                        DateTime fecha,
                    int idFormatoVenta,
                    int idUsuarioMod,
                    string UsuarioMod,
                    string comentario,
                    int cuentaAhorro,
                    int? idBanco)
            {
                this.fecha = fecha;
                this.idCliente = idCliente;
                this.idFormatoVenta = idFormatoVenta;
                this.usuarioCre = usuarioCre;
                this.comentario = comentario;
                this.idBanco = idBanco;
                this.idUsuarioMod = idUsuarioMod;
                this.usuarioMod = usuarioMod;
                this.fechaMod = DateTime.Now;
                this.cuentaAhorro = cuentaAhorro;
                this.idCoCliente = idCoCliente;
                this.bitCopropietario = bitCopropietario;
                this.idMoneda = idMoneda;
                
            }



            public void anulaOrdenVenta(int idEstado,int idEmpleado, string empleado)
            {
                this.idEstado = idEstado;
                this.idusuarioAnula = idEmpleado;
                this.usuarioAnula = empleado;
                this.fechaAnula = DateTime.Now;
            }

            public void considerarVenta(int idEstado,int idEmpleado)
            {
                this.idEstado = idEstado;
                this.ConsideradorVenta = idEmpleado;
                this.fechaVenta = DateTime.Now;
                
            }

            public int getidAnterior(dbGestionDataContext _db, int idinternal, int idProyecto)
            {
                int intAnterior = 0;

                int c = _db.OrdenVentas.Where(p => p.idInternal < idinternal & p.idProyecto == idProyecto).Count();
                if (c == 0)
                {
                    throw new Exception("No existe Registros");
                }
                else
                {
                    intAnterior = _db.OrdenVentas.Where(a => a.idInternal < idinternal & a.idProyecto == idProyecto).Max(a => a.idInternal);

                }


                return intAnterior;

            }
            public int getidSiguiente(dbGestionDataContext _db, int idinternal, int idProyecto)
            {
                int intSiguiente = 0;

                //revisar la sentencia generada

                int c = _db.OrdenVentas.Where(p => p.idInternal > idinternal & p.idProyecto == idProyecto).Count();

                if (c == 0)
                {
                    throw new Exception("No existe Registros");
                }
                else
                {
                    intSiguiente = _db.OrdenVentas.Where(p => p.idInternal > idinternal & p.idProyecto == idProyecto).Min(a => a.idInternal);
                }

                return intSiguiente;
            }


            public string getCorrelativo(dbGestionDataContext _db, int idProyecto)
            {


                string numDocumento = "00000001";

                var q = from a in _db.OrdenVentas
                        where a.idProyecto == idProyecto
                        select a.numDocumento;


                if (q.Count() > 0)
                {
                    int numActual = q.Max(p => Convert.ToInt32(p));


                    numActual++;
                    if (numActual < 10)
                        numDocumento = "0000000" + numActual.ToString();
                    else if (numActual < 100)
                        numDocumento = "000000" + numActual.ToString();
                    else if (numActual < 1000)
                        numDocumento = "00000" + numActual.ToString();
                    else if (numActual < 10000)
                        numDocumento = "0000" + numActual.ToString();
                    else if (numActual < 100000)
                        numDocumento = "000" + numActual.ToString();
                    else if (numActual < 1000000)
                        numDocumento = "00" + numActual.ToString();
                    else if (numActual < 1000000)
                        numDocumento = "0" + numActual.ToString();
                    else if (numActual < 10000000)
                        numDocumento = numActual.ToString();
                    else if (numActual > 9999999)
                    {
                        throw new Exception("Limite  de Correlativo ");
                    }


                }
                return numDocumento;

            }

            }
}
